#pragma once
#ifndef COMPILETIMEMEM_H
#define COMPILETIMEMEM_H

#include <cstddef>
#include <cstdlib>

template<std::size_t Length, char Value = 0>
class CompileTimeMemset
{
public:
    static FORCEINLINE void Perform(void* Ptr)
    {
        std::memset(Ptr, Value, Length);
    }
};
template<std::size_t Length>
class CompileTimeMemcpy
{
public:
    static FORCEINLINE void Perform(void* Source, void* Destination)
    {
        std::memcpy(Source, Destination, Length);
    }
};
template<std::size_t Length>
class CompileTimeMemmov
{
public:
    static FORCEINLINE void Perform(void* Source, void* Destination)
    {
        std::memmov(Source, Destination, Length);
    }
};


#endif 